package com.spsa.utilidades;

import java.io.File;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import com.spsa.persistencia.entidades.Interfaz;

public class UtilFechas {

	public static boolean esHoy(Date date) {
		Calendar hoy = GregorianCalendar.getInstance();
		int diaHoy = hoy.get(Calendar.DAY_OF_MONTH);
		int mesHoy = hoy.get(Calendar.MONTH) + 1;
		int anioHoy = hoy.get(Calendar.YEAR);
		
		Calendar fecha = GregorianCalendar.getInstance();
		fecha.setTime(date);
		
		int diaFecha = fecha.get(Calendar.DAY_OF_MONTH);
		int mesFecha = fecha.get(Calendar.MONTH) + 1;
		int anioFecha = fecha.get(Calendar.YEAR);
		
		if(diaHoy == diaFecha && mesHoy == mesFecha && anioHoy == anioFecha)
			return true;
		else
			return false;
	}
	
	public static boolean archivoEsDeHoy(File archivo) {
		Date date = new Date(archivo.lastModified());
		
		return esHoy(date);
	}
	
	public static boolean sonElMismoDia(Date date1, Date date2) {
		Calendar fecha1 = GregorianCalendar.getInstance();
		fecha1.setTime(date1);
		int dia1 = fecha1.get(Calendar.DAY_OF_MONTH);
		int mes1 = fecha1.get(Calendar.MONTH) + 1;
		int anio1 = fecha1.get(Calendar.YEAR);
		
		Calendar fecha2= GregorianCalendar.getInstance();
		fecha2.setTime(date2);
		
		int dia2 = fecha2.get(Calendar.DAY_OF_MONTH);
		int mes2 = fecha2.get(Calendar.MONTH) + 1;
		int anio2 = fecha2.get(Calendar.YEAR);
		
		if(dia1 == dia2 && mes1 == mes2 && anio1 == anio2)
			return true;
		else
			return false;
	}
	
	public static Date obtenerHoy() {
		Calendar calendario = Calendar.getInstance();
	    calendario.set(Calendar.HOUR_OF_DAY, 0);
	    calendario.set(Calendar.MINUTE, 0);
	    calendario.set(Calendar.SECOND, 0);
	    calendario.set(Calendar.MILLISECOND, 0);
	    return calendario.getTime();
	}
		
	public static Date obtenerManiana() {
		Date hoy = obtenerHoy();
		Calendar maniana = GregorianCalendar.getInstance();
		maniana.setTime(hoy);
		maniana.add(Calendar.DAY_OF_MONTH, 1);
		
		return new Date(maniana.getTimeInMillis());
	}
	public static Date obtenerFechaUso(File archivo, int horaCreacion) {
		Date fechaCreacion = new Date(archivo.lastModified());
		
		if(UtilFechas.esHoy(fechaCreacion)) {
			if(fechaCreacion.getHours() > horaCreacion)
				return UtilFechas.obtenerManiana();
			else
				return UtilFechas.obtenerHoy();
		}
		
		if(UtilFechas.esAyer(fechaCreacion)) {
			if(fechaCreacion.getHours() > horaCreacion)
				return UtilFechas.obtenerHoy();
		}
		
		return null;
	}

	private static boolean esAyer(Date date) {
		Calendar ayer = GregorianCalendar.getInstance();
		ayer.add(Calendar.DAY_OF_MONTH, -1);
		
		int diaHoy = ayer.get(Calendar.DAY_OF_MONTH);
		int mesHoy = ayer.get(Calendar.MONTH) + 1;
		int anioHoy = ayer.get(Calendar.YEAR);
		
		Calendar fecha = GregorianCalendar.getInstance();
		fecha.setTime(date);
		
		int diaFecha = fecha.get(Calendar.DAY_OF_MONTH);
		int mesFecha = fecha.get(Calendar.MONTH) + 1;
		int anioFecha = fecha.get(Calendar.YEAR);
		
		if(diaHoy == diaFecha && mesHoy == mesFecha && anioHoy == anioFecha)
			return true;
		else
			return false;
	}
}
